<?php

namespace App\Http\Controllers\Client\Activity\Talent;

use App\Http\Controllers\ClientController;
use App\Models\Activity;
use App\Models\Tools\AliOss;
use App\Models\Tools\Data;
use Illuminate\Support\Facades\DB;

class ActivityTalentHistoryController extends ClientController
{
    /**
     * 查询活动参与记录
     * @return \Illuminate\Http\JsonResponse
     */
    public function index()
    {
        // 开奖时间、中奖时间、领取时间、使用时间

        // 查询我的所有参与记录
        $history = DB::table('lottery_users_draw as lud')
            ->leftJoin('lottery_activity as la', 'lud.act_id', '=', 'la.act_id')
            ->leftJoin('lottery_goods as lg', 'la.goods_id', '=', 'lg.goods_id')
            ->leftJoin('lottery_draw_detail as ldd', 'lud.participate_id', '=', 'ldd.participate_id')
            ->leftJoin('shop', 'shop.shop_id', 'la.shop_id')
            ->leftJoin('dict_area as da', 'shop.district', '=', 'da.id')
            ->where('lud.we_id', '=', $this->we_id)
            ->orderByDesc('la.start_time')
            ->select('la.act_id', 'la.status', 'la.goods_id', 'la.shop_id','ldd.consumed',
                'lg.goods_name', 'shop.shop_name', 'da.short_name', 'lud.status as participate_status',
                'la.canceled_at','la.end_time','lud.win_at','lud.cancel_at','la.draw_time','ldd.consumed_at')
            ->get()
            ->map(function ($item){
                $item->text = Activity::activityStatus(
                    $item->status,
                    $item->participate_status,
                    in_array($item->shop_id, Activity::winedShopIds($this->we_id)),
                    in_array($item->shop_id, Activity::participatingShopIds($this->we_id))
                );

                // 倒计时
                if($item->participate_status === Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WINING){
                    $item->time = (strtotime($item->cancel_at) - time()) * 1000;
                }

                switch ($item->status){
                    case Data::DATA_DB_LOTTERY_ACTIVITY_STATUS_BEFORE: // 等待开奖：显示开奖时间（截止时间）
//                        unset($item->end_time); // 截止时间
                        unset($item->win_at); // 领奖开始时间
                        unset($item->cancel_at); // 领奖截止时间
                        unset($item->draw_time); // 领奖时间
                        unset($item->consumed_at); // 使用时间
                        unset($item->canceled_at); // 关闭时间
                        break;
                    case Data::DATA_DB_LOTTERY_ACTIVITY_STATUS_PRE: // 正在开奖
                        switch ($item->participate_status){
                            case Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WINING: // 中奖领奖:显示中奖时间（保留截止时间）
                                unset($item->end_time); // 截止时间
//                                unset($item->win_at); // 领奖开始时间
//                                unset($item->cancel_at); // 领奖截止时间
                                unset($item->draw_time); // 领奖时间
                                unset($item->consumed_at); // 使用时间
                                unset($item->canceled_at); // 关闭时间
                                break;
                            case Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_BEFORE: // 其他人正在领奖：不显示
                                unset($item->end_time); // 截止时间
                                unset($item->win_at); // 领奖开始时间
                                unset($item->cancel_at); // 领奖截止时间
                                unset($item->draw_time); // 领奖时间
                                unset($item->consumed_at); // 使用时间
                                unset($item->canceled_at); // 关闭时间
                                break;
                            case Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_OVERTIME: // 领奖超时：过期时间
                                unset($item->end_time); // 截止时间
                                unset($item->win_at); // 领奖开始时间
                                unset($item->cancel_at); // 领奖截止时间
                                unset($item->draw_time); // 领奖时间
                                unset($item->consumed_at); // 使用时间
                                unset($item->canceled_at); // 关闭时间
                                break;
                            default:
                                unset($item->end_time); // 截止时间
                                unset($item->win_at); // 领奖开始时间
                                unset($item->cancel_at); // 领奖截止时间
                                unset($item->draw_time); // 领奖时间
                                unset($item->consumed_at); // 使用时间
                                unset($item->canceled_at); // 关闭时间
                        }
                        break;
                    case Data::DATA_DB_LOTTERY_ACTIVITY_STATUS_AFTER: // 已有人领奖
                        if($item->participate_status === Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN){ // 中奖
                            unset($item->end_time); // 截止时间
                            unset($item->win_at); // 领奖开始时间
                            unset($item->cancel_at); // 领奖截止时间
//                            unset($item->draw_time); // 领奖时间
                            unset($item->consumed_at); // 使用时间
                            unset($item->canceled_at); // 关闭时间
                        } else { // 未中奖
                            unset($item->end_time); // 截止时间
                            unset($item->win_at); // 领奖开始时间
                            unset($item->cancel_at); // 领奖截止时间
//                            unset($item->draw_time); // 领奖时间
                            unset($item->consumed_at); // 使用时间
                            unset($item->canceled_at); // 关闭时间
                        }
                        break;
                    case Data::DATA_DB_LOTTERY_ACTIVITY_STATUS_SUCCESS: // 已使用
                        if($item->participate_status === Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN){// 中奖：显示使用时间
                            unset($item->end_time); // 截止时间
                            unset($item->win_at); // 领奖开始时间
                            unset($item->cancel_at); // 领奖截止时间
                            unset($item->draw_time); // 领奖时间
//                            unset($item->consumed_at); // 使用时间
                            unset($item->canceled_at); // 关闭时间
                        }  else { // 未中奖:不显示
                            unset($item->end_time); // 截止时间
                            unset($item->win_at); // 领奖开始时间
                            unset($item->cancel_at); // 领奖截止时间
                            unset($item->draw_time); // 领奖时间
//                            unset($item->consumed_at); // 使用时间
                            unset($item->canceled_at); // 关闭时间
                        }
                        break;
                    case Data::DATA_DB_LOTTERY_ACTIVITY_STATUS_CANCEL: // 已关闭：显示关闭时间
                        unset($item->end_time); // 截止时间
                        unset($item->win_at); // 领奖开始时间
                        unset($item->cancel_at); // 领奖截止时间
                        unset($item->draw_time); // 领奖时间
                        unset($item->consumed_at); // 使用时间
//                        unset($item->canceled_at); // 关闭时间
                        break;

                }
                return $item;
            });

        $pending = $history->where('participate_status', Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WINING);
        $win = $history->where('participate_status', Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN)
            ->where('consumed',0);
        $used = $history->where('participate_status', Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN)
            ->where('consumed',1);
//
//        $pending = DB::table('lottery_users_draw as lud')
//            ->leftJoin('lottery_activity as la', 'lud.act_id', '=', 'la.act_id')
//            ->leftJoin('lottery_goods as lg', 'la.goods_id', '=', 'lg.goods_id')
//            ->leftJoin('lottery_draw_detail as ldd', 'lud.participate_id', '=', 'ldd.participate_id')
//            ->leftJoin('shop', 'shop.shop_id', 'la.shop_id')
//            ->leftJoin('dict_area as da', 'shop.district', '=', 'da.id')
//            ->where('lud.we_id','=',$this->we_id)
//            ->where('lud.status', '=', Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WINING)
//            ->orderByDesc('la.start_time')
//            ->select('la.act_id', 'la.status', 'la.goods_id', 'la.shop_id',
//                'lg.goods_name', 'shop.shop_name', 'da.short_name', 'lud.created_at', 'lud.status as participate_status')
//            ->get()
//            ->toArray();
//
//        $win = DB::table('lottery_users_draw as lud')
//            ->leftJoin('lottery_activity as la', 'lud.act_id', '=', 'la.act_id')
//            ->leftJoin('lottery_goods as lg', 'la.goods_id', '=', 'lg.goods_id')
//            ->leftJoin('lottery_draw_detail as ldd', 'lud.participate_id', '=', 'ldd.participate_id')
//            ->leftJoin('shop', 'shop.shop_id', 'la.shop_id')
//            ->leftJoin('dict_area as da', 'shop.district', '=', 'da.id')
//            ->where('lud.we_id','=',$this->we_id)
//            ->where('lud.status',Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN)
//            ->where('ldd.consumed','=',0)
//            ->orderByDesc('la.start_time')
//            ->select('la.act_id', 'la.status', 'la.goods_id', 'la.shop_id', 'la.draw_time','lg.price','shop.address','shop.contact_man','shop.contact_phone',
//                'lg.goods_name', 'shop.shop_name', 'da.short_name', 'lud.created_at','lud.code')
//            ->get()
//            ->map(function($item){
//                $item->consume_end_time = date("Y-m-d",strtotime("$item->draw_time +14 day"));
//                $item->overtime = strtotime($item->consume_end_time) < strtotime(date("Y-m-d"));
//                return $item;
//            })
//            ->toArray();
//
//        $used = DB::table('lottery_users_draw as lud')
//            ->leftJoin('lottery_activity as la', 'lud.act_id', '=', 'la.act_id')
//            ->leftJoin('lottery_goods as lg', 'la.goods_id', '=', 'lg.goods_id')
//            ->leftJoin('lottery_draw_detail as ldd', 'lud.participate_id', '=', 'ldd.participate_id')
//            ->leftJoin('shop', 'shop.shop_id', 'la.shop_id')
//            ->leftJoin('dict_area as da', 'shop.district', '=', 'da.id')
//            ->where('lud.we_id','=',$this->we_id)
//            ->where('lud.status',Data::DATA_DB_LOTTERY_USERS_DRAW_STATUS_WIN)
//            ->where('ldd.consumed','=',1)
//            ->orderByDesc('la.start_time')
//            ->select('la.act_id', 'la.status', 'la.goods_id', 'la.shop_id', 'la.draw_time','ldd.consumed_at',
//                'lg.goods_name', 'shop.shop_name','shop.contact_man','shop.contact_phone','da.short_name', 'lud.created_at')
//            ->get()
//            ->toArray();

        return $this->setReturnJson(0, 'success', [
            'history' => $history->toArray(), // 全部
            'pending' => array_values($pending->toArray()), // 等待开奖
            'win' => array_values($win->toArray()), // 已中奖
            'used' => array_values($used->toArray()), // 已使用
        ]);

    }

}
